from collections import defaultdict

class Solution:
    def calculateScore(self, s: str) -> int:
        # 哈希表 记录每个字符出现的位置
        has = defaultdict(list)
        ans = 0
        for i in range(len(s)):
            # cnt为镜像字符的 数学表示
            cnt = 122 + 97 - ord(s[i])
            if chr(cnt) in has and has[chr(cnt)]:
                # 访问最后一个，因为题目要求是找到最近的没标记的下标i
                ans += i - has[chr(cnt)][-1]
                # 清除标记
                has[chr(cnt)].pop()
            else:
                has[s[i]].append(i)
        return ans

